/**
 * 
 */
package com.local.runnable.RunnableDmeo;

/**
 * @author ganhx
 *
 */
public class BuyTickey implements Runnable{
    //public static int tickey = 100;
	private Tickey tickey;
	Object mutex = new Object();

	public BuyTickey(Tickey tickey) {
		this.tickey = tickey;
	}



	@Override
	public void run() {
		while(tickey.getTickey() > 0) {
			synchronized(mutex){//需要有一个锁变量
				 try {
					 Thread.sleep(400); //加个延迟，要不然执行太快，后面的进程抢不到资源
					 } catch (InterruptedException e) {
					 e.printStackTrace();
					 }
				if(tickey.getTickey() <=0) {//synchronized之前没锁住其他线程（有可能进入到while等待，当进入后需要重新判断count值是大于0，不然就会变成0或负数）
					System.out.println(Thread.currentThread().getName()+"没票了，明天再来吧！");
					break; //里面在判断一次，若没票了一定要跳出while循环
				}
				int temp = tickey.getTickey();
				System.out.println(Thread.currentThread().getName()+"票还剩"+temp--+"张");
				tickey.setTickey(temp);
			}

		}
		
	}

}
